<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml">
    <ui:define name="cabecera">
        <title>Gestión de Géneros</title>
        <link rel="shortcut icon"  href="../../resources/imagenes/favicon.ico" />
    </ui:define>
    <ui:define name="contenido">
        <center>
            <p:panel id="generoPnl" header="Géneros" style="width: 950px">
                <h:form id="tablaGeneroFrm">
                    <p:dataTable id="tablaGenero" var="genero" rows="10" selectionMode="single"
                                 value="#{generoBean.listaGenero}" rowKey="#{genero.codigogenero}"
                                 paginator="true" paginatorPosition="bottom" resizableColumns="true"
                                 emptyMessage="No hay registros disponibles.">
                        <p:column headerText="Género" filterBy="#{genero.nombre}" 
                                  sortBy="#{genero.nombre}" filterMatchMode="contains">
                            <h:outputText id="nombreTxt" value="#{genero.nombre}" />
                        </p:column>
                        <p:column headerText="Phylum" filterMatchMode="contains"
                                  filterBy="#{genero.familia.superfamilia.orden.clase.phylum.nombre}" 
                                  sortBy="#{genero.familia.superfamilia.orden.clase.phylum.nombre}">
                            <h:outputText id="phylumTxt" value="#{genero.familia.superfamilia.orden.clase.phylum.nombre}" />
                        </p:column>
                        <p:column headerText="Clase" filterBy="#{genero.familia.superfamilia.orden.clase.nombre}" 
                                  sortBy="#{genero.familia.superfamilia.orden.clase.nombre}" filterMatchMode="contains">
                            <h:outputText id="claseTxt" value="#{genero.familia.superfamilia.orden.clase.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Clase" filterBy="#{genero.familia.superfamilia.orden.clase.subclase}" 
                                  sortBy="#{genero.familia.superfamilia.orden.clase.subclase}" filterMatchMode="contains">
                            <h:outputText id="subclaseTxt" value="#{genero.familia.superfamilia.orden.clase.subclase}" />
                        </p:column>
                        <p:column headerText="Infra-Clase" filterBy="#{genero.familia.superfamilia.orden.clase.infraclase}" 
                                  sortBy="#{genero.familia.superfamilia.orden.clase.infraclase}" filterMatchMode="contains">
                            <h:outputText id="infraclaseTxt" value="#{genero.familia.superfamilia.orden.clase.infraclase}" />
                        </p:column>
                        <p:column headerText="Orden" filterBy="#{genero.familia.superfamilia.orden.nombre}" 
                                  sortBy="#{genero.familia.superfamilia.orden.nombre}" filterMatchMode="contains">
                            <h:outputText id="ordenTxt" value="#{genero.familia.superfamilia.orden.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Orden" filterBy="#{genero.familia.superfamilia.orden.suborden}" 
                                  sortBy="#{genero.familia.superfamilia.orden.suborden}" filterMatchMode="contains">
                            <h:outputText id="subordenTxt" value="#{genero.familia.superfamilia.orden.suborden}" />
                        </p:column>
                        <p:column headerText="Super-Familia" filterBy="#{genero.familia.superfamilia.nombre}" 
                                  sortBy="#{genero.familia.superfamilia.nombre}" filterMatchMode="contains">
                            <h:outputText id="superfamiliaTxt" value="#{genero.familia.superfamilia.nombre}" />
                        </p:column>
			<p:column headerText="Familia" filterBy="#{genero.familia.nombre}" 
                                  sortBy="#{genero.familia.nombre}" filterMatchMode="contains">
                            <h:outputText id="familiaTxt" value="#{genero.familia.nombre}" />
                        </p:column>
                        <p:column headerText="Sub-Familia" filterBy="#{genero.familia.subfamilia}" 
                                  sortBy="#{genero.familia.subfamilia}" filterMatchMode="contains">
                            <h:outputText id="subfamiliaTxt" value="#{genero.familia.subfamilia}" />
                        </p:column>
                        <p:column headerText="Tribu" filterBy="#{genero.familia.tribu}" 
                                  sortBy="#{genero.familia.tribu}" filterMatchMode="contains">
                            <h:outputText id="tribuTxt" value="#{genero.familia.tribu}" />
                        </p:column> 
                        <p:column headerText="Habilitado" filterBy="#{genero.habilitado}" 
                                  sortBy="#{genero.habilitado}" filterMatchMode="contains">
                            <h:outputText id="habilitadoTxt" value="#{genero.habilitado}" />
                        </p:column>
                        <p:column headerText="Modificar">
                            <center>
                                <p:commandButton id="modificarBtn" title="Modificar" icon="ui-icon-pencil"
                                                 oncomplete="modificarGeneroWgt.show()"
                                                 actionListener="#{generoBean.prepararModificacion(genero)}"
                                                 update=":modificarGeneroFrm:modificarGeneroPnl"/>
                            </center>
                        </p:column>     
                    </p:dataTable>
                    <p:commandButton id="nuevoBtn" value="Nuevo Género"
                                     oncomplete="guardarGeneroWgt.show()"
                                     actionListener="#{generoBean.prepararAdicion}"
                                     update=":guardarGeneroFrm:guardarGeneroPnl"
                                     title="Agregar nueva género" icon="ui-icon-document" />
                </h:form>
            </p:panel>
        </center>
    </ui:define>
    <ui:define name="extra">
        <p:dialog id="guardarGeneroDlg" header="Nuevo Género" widgetVar="guardarGeneroWgt" 
                  resizable="false" modal="true" showEffect="false">
            <h:form id="guardarGeneroFrm">
                <h:panelGrid id="guardarGeneroPnl" columns="2" style="margin-bottom:10px">
                    <p:outputLabel for="codigofamiliaTxt" value="Familia Sub-Familia Tribu:" />
                    <p:selectOneMenu id="codigofamiliaTxt" value="#{generoBean.genero.familia}"
                                     filter="true" filterMatchMode="contains">
                        <f:selectItem itemLabel="Seleccione" itemValue="" />
                        <f:selectItems value="#{generoBean.listaFamilia}" />
                        <f:converter converterId="familiaConverter" />                        
                    </p:selectOneMenu>
                    <p:outputLabel for="nombreTxt" value="Nombre del Género: " />
                    <p:inputText id="nombreTxt" title="Obligatorio" value="#{generoBean.genero.nombre}" />
                    <p:spacer width="20" height="20" />
                    <p:spacer width="20" height="20" />
                    <p:commandButton id="guardarBtn"  actionListener="#{generoBean.agregarGenero}"
                                     oncomplete=":guardarGeneroWgt.hide()" 
                                     update=":tablaGeneroFrm:tablaGenero" 
                                     value="Guardar" icon="ui-icon-disk" title="Guardar"/>
                    <p:commandButton value="Cancelar" type="button" onclick="guardarGeneroWgt.hide()"
                                     icon="ui-icon-cancel" title="Cancelar"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
        <p:dialog id="modificarGeneroDlg" header="Modificar Género" widgetVar="modificarGeneroWgt" 
                  resizable="false" modal="true" showEffect="false">
            <h:form id="modificarGeneroFrm">
                <h:panelGrid id="modificarGeneroPnl" columns="2" style="margin-bottom:10px">
                    <p:outputLabel for="codigofamiliaTxt" value="Familia Sub-Familia Tribu:" />
                    <p:selectOneMenu id="codigofamiliaTxt" value="#{generoBean.genero.familia}">
                        <f:selectItem itemLabel="Seleccione" itemValue="" />
                        <f:selectItems value="#{generoBean.listaFamilia}" />
                        <f:converter converterId="familiaConverter" />                        
                    </p:selectOneMenu>
                    <p:outputLabel for="nombreTxt" value="Nombre del Género: " />
                    <p:inputText id="nombreTxt" title="Obligatorio" value="#{generoBean.genero.nombre}" />
                    <p:outputLabel for="habilitadoTxt" value="Habilitado: " />
                    <p:selectBooleanCheckbox id="habilitadoTxt" value="#{generoBean.genero.habilitado}" />
                    <p:spacer width="20" height="20" />
                    <p:spacer width="20" height="20" />
                    <p:commandButton id="guardarBtn" actionListener="#{generoBean.actualizarGenero}" 
                                     oncomplete=":modificarGeneroWgt.hide()" 
                                     update=":tablaGeneroFrm:tablaGenero" 
                                     value="Guardar" icon="ui-icon-disk" title="Guardar"/>
                    <p:commandButton value="Cancelar" type="button" onclick="modificarGeneroWgt.hide()"
                                     icon="ui-icon-cancel" title="Cancelar"/>
                </h:panelGrid>
            </h:form>
        </p:dialog>
    </ui:define>
</ui:composition>